Pandas হল Python-এর একটি অত্যন্ত জনপ্রিয় এবং শক্তিশালী লাইব্রেরি যা ডেটা বিশ্লেষণ এবং প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়। এটি DataFrame এবং Series নামক দুটি মূল ডেটা স্ট্রাকচার সরবরাহ করে, যা টেবিল আকারে ডেটা ম্যানিপুলেশন এবং বিশ্লেষণ করা খুব সহজ করে তোলে।
Pandas দিয়ে আপনি সহজেই ডেটা লোড করতে, প্রক্রিয়া করতে, ম্যানিপুলেট করতে এবং বিশ্লেষণ করতে পারবেন। এটি স্ট্যাটিস্টিক্যাল অ্যানালাইসিস, ডেটা ক্লিনিং, ডেটা ফিল্টারিং, এবং গ্রাফিকাল ভিজ্যুয়ালাইজেশন সহ অনেক কার্যক্রম সহজভাবে সম্পাদন করতে সহায়ক।
এখানে Pandas দিয়ে ডেটা ম্যানিপুলেশন-এর কিছু সাধারণ কাজের ব্যাখ্যা দেওয়া হলো:
১. DataFrame তৈরি করা
Pandas-এর DataFrame একটি দুই-মাত্রিক, ট্যাবুলার ডেটা স্ট্রাকচার। এটি সঠিকভাবে সিরিজ এবং কলামের সাহায্যে ডেটা পরিচালনা করতে সহায়ক।
import pandas as pd
# ডেটা সেট তৈরি
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [24, 27, 22], 'City': ['New York', 'Los Angeles', 'Chicago']}
df = pd.DataFrame(data)
# DataFrame প্রদর্শন
print(df)
এখানে Name, Age, এবং City কলামসহ একটি ডেটা ফ্রেম তৈরি করা হয়েছে।
২. CSV ফাইল থেকে DataFrame লোড করা
Pandas ব্যবহার করে আপনি CSV, Excel, এবং অন্যান্য ফাইল ফরম্যাট থেকে ডেটা লোড করতে পারেন।
# CSV ফাইল থেকে ডেটা লোড করা
df = pd.read_csv('data.csv')
# প্রথম ৫টি সারি দেখানো
print(df.head())
এখানে data.csv ফাইল থেকে ডেটা লোড করে DataFrame তৈরি করা হচ্ছে এবং head() ফাংশনটি প্রথম ৫টি সারি প্রদর্শন করবে।
৩. কলাম বা সারি নির্বাচন করা
Pandas-এ আপনি নির্দিষ্ট কলাম বা সারি নির্বাচন করতে পারেন।
কলাম নির্বাচন:
# 'Name' কলাম নির্বাচন
names = df['Name']
print(names)
সারি নির্বাচন:
# ইন্ডেক্স 1 এর সারি নির্বাচন (যেটি Bob এর তথ্য)
row = df.iloc[1]
print(row)
এখানে, .iloc[] ইন্ডেক্সের মাধ্যমে সারি নির্বাচন করে।
৪. ডেটা ফিল্টার করা
Pandas-এ ডেটা ফিল্টারিং অনেক সহজ। আপনি কিছু শর্ত পূর্ণ হলে ডেটা নির্বাচন করতে পারেন।
# Age কলামের মান 25 এর বেশি হলে ফিল্টার করা
filtered_df = df[df['Age'] > 25]
print(filtered_df)
এখানে, Age কলামের মান ২৫ এর বেশি হলে সেগুলি ফিল্টার করা হয়েছে।
৫. নতুন কলাম যোগ করা
Pandas-এ নতুন কলাম যোগ করা অত্যন্ত সহজ। আপনি সরাসরি DataFrame-এ নতুন কলাম সংযোজন করতে পারেন।
# নতুন কলাম 'Age in Months' যোগ করা
df['Age in Months'] = df['Age'] * 12
print(df)
এখানে, Age কলামের মানকে ১২ দিয়ে গুণ করে নতুন কলাম তৈরি করা হয়েছে।
৬. গ্রুপবাই (GroupBy)
Pandas-এ GroupBy ফিচার ব্যবহার করে আপনি ডেটাকে গ্রুপ করে বিভিন্ন অপারেশন করতে পারেন।
# 'City' কলামের ভিত্তিতে গ্রুপিং এবং প্রতিটি শহরের জন্য গড় বয়স বের করা
grouped = df.groupby('City')['Age'].mean()
print(grouped)
এখানে, City কলামের ভিত্তিতে গ্রুপ করে প্রতিটি শহরের গড় বয়স বের করা হয়েছে।
৭. ডেটা অ্যাগ্রিগেশন (Aggregation)
গ্রুপবাইয়ের পর আপনি বিভিন্ন অ্যাগ্রিগেট ফাংশন যেমন sum(), mean(), count() ইত্যাদি ব্যবহার করতে পারেন।
# 'City' ভিত্তিক গ্রুপিং এবং বয়সের সর্বোচ্চ মান বের করা
aggregated_data = df.groupby('City')['Age'].max()
print(aggregated_data)
এখানে, City কলামের ভিত্তিতে গ্রুপিং করে প্রতিটি শহরের বয়সের সর্বোচ্চ মান বের করা হয়েছে।
৮. ডেটা মর্জিং (Merging DataFrames)
Pandas-এ আপনি দুইটি বা বেশি DataFrame একত্রিত করতে পারেন merge() ফাংশনের মাধ্যমে।
# দুটি DataFrame তৈরি
df1 = pd.DataFrame({'ID': [1, 2, 3], 'Name': ['Alice', 'Bob', 'Charlie']})
df2 = pd.DataFrame({'ID': [1, 2, 4], 'Age': [24, 27, 22]})
# DataFrame গুলি মার্জ করা (ID এর উপর)
merged_df = pd.merge(df1, df2, on='ID')
print(merged_df)
এখানে, ID কলামের ভিত্তিতে দুটি DataFrame মার্জ করা হয়েছে।
৯. ডেটা সজ্জা (Sorting)
Pandas DataFrame-এ ডেটা সজ্জা করতে sort_values() ফাংশন ব্যবহার করা হয়।
# 'Age' কলাম অনুযায়ী সজ্জা (ascending=True অর্থে কম থেকে বেশি)
sorted_df = df.sort_values(by='Age', ascending=True)
print(sorted_df)
এখানে, Age কলামের মান অনুযায়ী ডেটা কম থেকে বেশি সজ্জিত করা হয়েছে।
১০. ডেটা ক্লিনিং
Pandas-এ মিসিং ভ্যালু (missing values) পূর্ণ করতে বা ডিলিট করতে সহজ উপায় রয়েছে।
মিসিং ভ্যালু চেক করা:
# মিসিং ভ্যালু চেক করা
missing_data = df.isnull().sum()
print(missing_data)
মিসিং ভ্যালু পূর্ণ করা:
# মিসিং ভ্যালু পূর্ণ করা (যেমন 'Age' কলামের জন্য গড় মান দিয়ে পূর্ণ করা)
df['Age'] = df['Age'].fillna(df['Age'].mean())
এখানে, Age কলামের মিসিং ভ্যালু গড় মান দিয়ে পূর্ণ করা হয়েছে।
সারাংশ
Pandas হল ডেটা ম্যানিপুলেশন এবং বিশ্লেষণের জন্য একটি অত্যন্ত শক্তিশালী টুল। এটি ডেটা লোডিং, ফিল্টারিং, গ্রুপিং, মর্জিং, সজ্জা, এবং ক্লিনিংসহ নানা কার্যক্রমের জন্য সাহায্য করে। ডেটা ফ্রেম এবং সিরিজের সাহায্যে Pandas-এ ডেটার বিভিন্ন দিক পরীক্ষা করা, বিশ্লেষণ করা এবং প্রয়োজনীয় তথ্য বের করা সহজ হয়ে যায়।
Pandas হল Python-এর একটি অত্যন্ত জনপ্রিয় এবং শক্তিশালী লাইব্রেরি, যা ডেটা ম্যানিপুলেশন এবং বিশ্লেষণের জন্য ব্যবহৃত হয়। এটি মূলত DataFrame এবং Series নামক ডেটা স্ট্রাকচার ব্যবহার করে ডেটাকে প্রক্রিয়া এবং বিশ্লেষণ করার জন্য তৈরি হয়েছে। Pandas ডেটা বিশ্লেষণকে সহজ এবং দ্রুত করে তোলে, এবং এটি ডেটাবেস, CSV, Excel, SQL এবং অন্যান্য ফাইল ফরম্যাট থেকে ডেটা আমদানি এবং রপ্তানি করার জন্য শক্তিশালী টুলস প্রদান করে।
Pandas এর প্রধান বৈশিষ্ট্য:
- DataFrame: এটি একটি টেবিল আকারে ডেটা স্ট্রাকচার, যা সারি এবং কলাম সহ ডেটাকে সঞ্চালন ও বিশ্লেষণ করতে সহায়ক।
- Series: এটি একটি একক কলাম বিশিষ্ট ডেটা স্ট্রাকচার, যা মূলত একক ডেটা সিরিজ ধারণ করতে ব্যবহৃত হয়।
- ডেটা ক্লিনিং: মিসিং ডেটা পূর্ণ করা, ডেটা ফিল্টারিং, ডেটা কনভার্সন, এবং অপ্রয়োজনীয় ডেটা অপসারণের জন্য Pandas অত্যন্ত কার্যকর।
- গ্রুপবাই অপারেশন: একসাথে ডেটা গ্রুপ করা এবং বিভিন্ন পরিসংখ্যান অপারেশন সম্পাদন করা যায়।
- টাইম সিরিজ: Pandas টাইম সিরিজ ডেটার সাথে কাজ করতে সক্ষম, যা আর্থিক এবং বৈজ্ঞানিক বিশ্লেষণে অত্যন্ত সহায়ক।
- ডেটার ফরম্যাটিং এবং ম্যানিপুলেশন: ডেটা ট্রান্সফরমেশন, সোর্টিং, এবং কমপ্লেক্স ক্যালকুলেশন করতে সহায়ক।
Pandas ইনস্টলেশন
Pandas ইনস্টল করার জন্য pip প্যাকেজ ম্যানেজার ব্যবহার করা হয়। নীচে Pandas ইনস্টল করার ধাপগুলি দেওয়া হল:
১. pip দিয়ে Pandas ইনস্টল করা:
Pandas ইনস্টল করার জন্য আপনার সিস্টেমে Python এবং pip ইনস্টল থাকতে হবে। যদি pip ইনস্টল না থাকে, আপনি উপরের নির্দেশনা অনুযায়ী pip ইনস্টল করতে পারেন।
Windows, MacOS, এবং Linux এ Pandas ইনস্টল করতে:
pip install pandas
২. ইনস্টলেশন যাচাই:
Pandas ইনস্টলেশনের পর আপনি এটি সঠিকভাবে ইনস্টল হয়েছে কিনা তা যাচাই করতে পারেন। Python ইন্টারপ্রেটারে (বা আপনার IDE/কোড এডিটরে) নিচের কোডটি চালিয়ে দেখুন:
import pandas as pd
print(pd.__version__) # এটি Pandas এর ইনস্টল সংস্করণ প্রদর্শন করবে
৩. Virtual Environment-এ Pandas ইনস্টল:
Pandas ইনস্টল করার সময় আপনি যদি আপনার প্রকল্পের জন্য একটি ভিন্ন পরিবেশ (environment) ব্যবহার করতে চান, তাহলে virtual environment তৈরি করতে পারেন।
Virtual Environment তৈরি:
python -m venv myenvএখানে
myenvহলো আপনার virtual environment এর নাম। আপনি অন্য কোন নামও ব্যবহার করতে পারেন।- Virtual Environment অ্যাকটিভেট করা:
Windows:
myenv\Scripts\activateMacOS/Linux:
source myenv/bin/activate
Virtual Environment-এ Pandas ইনস্টল করা:
pip install pandas
Pandas এর সাথে প্রথম কাজ
Pandas ইনস্টল করার পর, আপনি এটি দিয়ে ডেটা প্রক্রিয়াকরণ শুরু করতে পারেন। এখানে একটি উদাহরণ:
উদাহরণ: Pandas ব্যবহার করে ডেটা লোড এবং দেখানো
import pandas as pd
# ডেটা লোড করা (এখানে একটি সিম্পল ডেটাসেট ব্যবহার করা হয়েছে)
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [24, 27, 22],
'City': ['New York', 'San Francisco', 'Chicago']}
# DataFrame তৈরি
df = pd.DataFrame(data)
# DataFrame প্রদর্শন
print(df)
আউটপুট হবে:
Name Age City
0 Alice 24 New York
1 Bob 27 San Francisco
2 Charlie 22 Chicago
এইভাবে, Pandas দিয়ে ডেটা প্রক্রিয়াকরণ এবং বিশ্লেষণ করা সহজ হয়, এবং এটি Python-এ ডেটা সায়েন্স এবং বিশ্লেষণের জন্য একটি অত্যন্ত কার্যকর টুল।
সারাংশ
Pandas হল Python-এর একটি শক্তিশালী লাইব্রেরি যা ডেটা ম্যানিপুলেশন এবং বিশ্লেষণের জন্য ব্যবহৃত হয়। এটি DataFrame এবং Series স্ট্রাকচার ব্যবহার করে ডেটাকে সহজে প্রক্রিয়া এবং বিশ্লেষণ করতে সহায়ক। Pandas ইনস্টল করা খুবই সহজ, এবং এটি pip প্যাকেজ ম্যানেজার দিয়ে ইনস্টল করা যায়। এর মাধ্যমে আপনি ডেটা বিশ্লেষণ, টাইম সিরিজ ডেটা বিশ্লেষণ, গ্রুপিং, ডেটা ক্লিনিং এবং আরও অনেক কিছু করতে পারবেন।
Python-এর Pandas লাইব্রেরি ডেটা বিশ্লেষণ এবং প্রক্রিয়াকরণের জন্য দুটি প্রধান ডেটা স্ট্রাকচার সরবরাহ করে: DataFrame এবং Series। এগুলির সাহায্যে আপনি সহজে টেবিল আকারে ডেটা পরিচালনা করতে পারেন, যেমন কলাম এবং সারি নিয়ে কাজ করা। এদের মধ্যে পার্থক্য এবং ব্যবহার বুঝতে হলে প্রথমে এদের মৌলিক ধারণা জানা দরকার।
১. Series:
Series হল Pandas এর একটি মৌলিক ডেটা স্ট্রাকচার, যা একমাত্র একটি ভেক্টরের মতো কাজ করে, এবং এটি একটি একমাত্র কলামের ডেটার প্রতিনিধিত্ব করে। Series একটি একমাত্রিক (1D) আ্যারে যা লেবেলযুক্ত ডেটা ধারণ করে।
মৌলিক বৈশিষ্ট্য:
- এটি একমাত্র ডেটা কলাম ধারণ করে (যেমন, একটি মাত্র তালিকা বা অ্যারে)।
- প্রতিটি উপাদানের সাথে একটি index (ইন্ডেক্স) থাকে যা তার অবস্থান নির্দেশ করে।
- Series সাধারণত সংখ্যাত্মক, স্ট্রিং অথবা অন্য যে কোন ডেটা টাইপ ধারণ করতে পারে।
উদাহরণ:
import pandas as pd
# একটি সিম্পল Series তৈরি করা
data = [10, 20, 30, 40, 50]
series = pd.Series(data)
# সিরিজটি দেখানো
print(series)
আউটপুট:
0 10
1 20
2 30
3 40
4 50
dtype: int64
এখানে, সিরিজটি একটি একমাত্র ডেটা কলাম ধারণ করে, এবং প্রতিটি উপাদানের একটি ইন্ডেক্স (0, 1, 2, 3, 4) থাকে।
Index সহ Series:
Series তৈরি করতে ইন্ডেক্স প্রদান করা সম্ভব:
series_with_index = pd.Series(data, index=["a", "b", "c", "d", "e"])
print(series_with_index)
আউটপুট:
a 10
b 20
c 30
d 40
e 50
dtype: int64
এখানে, প্রতিটি ডেটা উপাদান একটি নির্দিষ্ট ইন্ডেক্স (a, b, c, d, e) দ্বারা চিহ্নিত।
২. DataFrame:
DataFrame হল একটি দ্বিমাত্রিক (2D) টেবিল ডেটা স্ট্রাকচার, যা কলাম এবং সারি নিয়ে গঠিত। এটি এক বা একাধিক Series এর সমষ্টি, এবং প্রতিটি Series একটি নির্দিষ্ট কলাম প্রতিনিধিত্ব করে।
মৌলিক বৈশিষ্ট্য:
- এটি একাধিক কলাম ধারণ করতে পারে, যেখানে প্রতিটি কলাম একটি Series।
- প্রতিটি কলামের জন্য একটি আলাদা index থাকতে পারে।
- DataFrame সাধারণত ডেটা বিশ্লেষণ, টেবিল আকারে ডেটা দেখানো এবং পরিচালনার জন্য ব্যবহৃত হয়।
উদাহরণ:
import pandas as pd
# ডেটার একটি dictionary তৈরি করা
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}
# DataFrame তৈরি করা
df = pd.DataFrame(data)
# DataFrame প্রদর্শন
print(df)
আউটপুট:
Name Age City
0 Alice 24 New York
1 Bob 27 Los Angeles
2 Charlie 22 Chicago
3 David 32 Houston
4 Eva 29 Phoenix
এখানে, DataFrame তে তিনটি কলাম (Name, Age, City) এবং পাঁচটি সারি রয়েছে। প্রতিটি কলামের একটি নাম (যেমন, "Name", "Age", "City") এবং প্রতিটি সারির একটি ইন্ডেক্স (0, 1, 2, 3, 4) রয়েছে।
Index সহ DataFrame:
DataFrame এ কলামের নাম এবং সারির ইন্ডেক্স কাস্টমাইজ করা যেতে পারে:
df_custom_index = pd.DataFrame(data, index=['a', 'b', 'c', 'd', 'e'])
print(df_custom_index)
আউটপুট:
Name Age City
a Alice 24 New York
b Bob 27 Los Angeles
c Charlie 22 Chicago
d David 32 Houston
e Eva 29 Phoenix
এখানে, DataFrame-এর সারির ইন্ডেক্স পরিবর্তন করা হয়েছে (a, b, c, d, e)।
DataFrame এবং Series এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Series | DataFrame |
|---|---|---|
| আয়তন | একমাত্রিক (1D) | দ্বিমাত্রিক (2D) |
| ডেটা | একটি কলামের ডেটা | একাধিক কলামের ডেটা |
| ইন্ডেক্স | একটি একক ইন্ডেক্স (প্রত্যেক উপাদানের জন্য) | একাধিক কলামের জন্য পৃথক পৃথক ইন্ডেক্স |
| ডেটার ধরন | সংখ্যাত্মক, স্ট্রিং বা অন্যান্য ডেটা | একাধিক ধরন: সংখ্যাত্মক, স্ট্রিং, টাইমস্ট্যাম্প |
| উদাহরণ | একটি কলামের ডেটা (যেমন, একক বৈশিষ্ট্যের তালিকা) | একাধিক বৈশিষ্ট্য, যেমন নাম, বয়স, শহর |
| ব্যবহার | সাধারণত একক বৈশিষ্ট্য বিশ্লেষণ | টেবিল আকারে ডেটা বিশ্লেষণ এবং ব্যবস্থাপনা |
সারাংশ
- Series: এটি Pandas এর একটি একমাত্রিক ডেটা স্ট্রাকচার, যা এক কলামের ডেটা ধারণ করে। এর সাথে একটি ইনডেক্স থাকে, যা প্রতিটি উপাদানকে চিহ্নিত করে।
- DataFrame: এটি Pandas এর একটি দ্বিমাত্রিক ডেটা স্ট্রাকচার, যা একাধিক কলাম এবং সারি নিয়ে গঠিত। এটি Series-এর একটি সংগ্রহ যা একত্রে ডেটা টেবিলের মতো কাজ করে।
Pandas DataFrame এবং Series উভয়ই ডেটা বিশ্লেষণ ও প্রক্রিয়াকরণের জন্য অত্যন্ত গুরুত্বপূর্ণ, এবং এগুলির সাহায্যে আপনি সহজে ডেটা ম্যানিপুলেশন এবং বিশ্লেষণ করতে পারেন।
Pandas একটি জনপ্রিয় Python লাইব্রেরি যা DataFrame নামক একটি ডেটা স্ট্রাকচার ব্যবহার করে ডেটাকে টেবিল আকারে সংরক্ষণ এবং পরিচালনা করার জন্য। DataFrame থেকে ডেটা নির্বাচন (Data Selection) এবং ফিল্টারিং (Filtering) হল ডেটা বিশ্লেষণের গুরুত্বপূর্ণ অংশ, যা বিভিন্ন পরিস্থিতিতে প্রয়োজনীয় ডেটা বের করতে সহায়তা করে।
এখানে Pandas DataFrame থেকে ডেটা সিলেকশন এবং ফিল্টারিং সম্পর্কিত বিভিন্ন পদ্ধতি বিস্তারিতভাবে আলোচনা করা হল।
১. DataFrame তৈরি
প্রথমে একটি সাধারণ DataFrame তৈরি করি:
import pandas as pd
# ডেটা সেট তৈরি
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Edward'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}
df = pd.DataFrame(data)
# DataFrame দেখানো
print(df)
আউটপুট:
Name Age City
0 Alice 24 New York
1 Bob 27 Los Angeles
2 Charlie 22 Chicago
3 David 32 Houston
4 Edward 29 Phoenix
২. Data Selection (ডেটা নির্বাচন)
DataFrame থেকে নির্দিষ্ট কলাম বা সারি নির্বাচন করার বিভিন্ন পদ্ধতি আছে।
১.1 একটি কলাম নির্বাচন:
# 'Name' কলাম নির্বাচন
name_column = df['Name']
print(name_column)
আউটপুট:
0 Alice
1 Bob
2 Charlie
3 David
4 Edward
Name: Name, dtype: object
১.2 একাধিক কলাম নির্বাচন:
# 'Name' এবং 'Age' কলাম নির্বাচন
selected_columns = df[['Name', 'Age']]
print(selected_columns)
আউটপুট:
Name Age
0 Alice 24
1 Bob 27
2 Charlie 22
3 David 32
4 Edward 29
১.3 একটি সারি নির্বাচন:
# প্রথম সারি নির্বাচন
first_row = df.iloc[0]
print(first_row)
আউটপুট:
Name Alice
Age 24
City New York
Name: 0, dtype: object
১.4 একাধিক সারি নির্বাচন:
# প্রথম তিনটি সারি নির্বাচন
first_three_rows = df.iloc[:3]
print(first_three_rows)
আউটপুট:
Name Age City
0 Alice 24 New York
1 Bob 27 Los Angeles
2 Charlie 22 Chicago
৩. Data Filtering (ডেটা ফিল্টারিং)
ডেটা ফিল্টারিং হল ডেটা সেটের মধ্যে নির্দিষ্ট শর্ত পূরণ করা সারি বা কলাম নির্বাচন করা।
৩.1 শর্ত দ্বারা ফিল্টারিং:
# Age কলামের মান ২৫ এর বেশি এমন সারি নির্বাচন করা
filtered_data = df[df['Age'] > 25]
print(filtered_data)
আউটপুট:
Name Age City
1 Bob 27 Los Angeles
3 David 32 Houston
4 Edward 29 Phoenix
৩.2 একাধিক শর্ত দ্বারা ফিল্টারিং:
# Age > 25 এবং City = 'Houston' শর্তে ফিল্টার করা
filtered_data = df[(df['Age'] > 25) & (df['City'] == 'Houston')]
print(filtered_data)
আউটপুট:
Name Age City
3 David 32 Houston
৩.3 অথবা শর্ত দ্বারা ফিল্টারিং:
# Age > 25 অথবা City = 'Chicago' শর্তে ফিল্টার করা
filtered_data = df[(df['Age'] > 25) | (df['City'] == 'Chicago')]
print(filtered_data)
আউটপুট:
Name Age City
1 Bob 27 Los Angeles
2 Charlie 22 Chicago
3 David 32 Houston
4 Edward 29 Phoenix
৩.4 নির্দিষ্ট মানের জন্য ফিল্টারিং:
# 'City' কলামে 'Chicago' সম্বলিত সারি নির্বাচন করা
filtered_data = df[df['City'] == 'Chicago']
print(filtered_data)
আউটপুট:
Name Age City
2 Charlie 22 Chicago
৪. DataFrame থেকে ইনডেক্স দিয়ে ফিল্টারিং
DataFrame থেকে সারি নির্বাচনের জন্য loc[] এবং iloc[] পদ্ধতি ব্যবহার করা যায়।
৪.1 loc[] ব্যবহার করে ফিল্টারিং:
loc[] পদ্ধতিটি ট্যাগড ইনডেক্সের মাধ্যমে সারি নির্বাচন করে।
# 'Name' কলামে 'Charlie' এর ইনডেক্সের সারি নির্বাচন
row = df.loc[df['Name'] == 'Charlie']
print(row)
আউটপুট:
Name Age City
2 Charlie 22 Chicago
৪.2 iloc[] ব্যবহার করে ফিল্টারিং:
iloc[] পদ্ধতিটি পজিশনাল ইনডেক্স (integer-based indexing) এর মাধ্যমে সারি নির্বাচন করে।
# প্রথম দুইটি সারি নির্বাচন
rows = df.iloc[:2]
print(rows)
আউটপুট:
Name Age City
0 Alice 24 New York
1 Bob 27 Los Angeles
৫. নতুন কলাম যোগ করা
আপনি যদি নতুন কলাম যোগ করতে চান, তবে সহজেই এটি করতে পারেন।
# একটি নতুন কলাম 'Age in Months' যোগ করা
df['Age in Months'] = df['Age'] * 12
print(df)
আউটপুট:
Name Age City Age in Months
0 Alice 24 New York 288
1 Bob 27 Los Angeles 324
2 Charlie 22 Chicago 264
3 David 32 Houston 384
4 Edward 29 Phoenix 348
সারাংশ
- Data Selection: ডেটা নির্বাচন করার জন্য আপনি কলাম, সারি বা নির্দিষ্ট শর্তের মাধ্যমে ডেটা নির্বাচন করতে পারেন।
- Filtering: নির্দিষ্ট শর্তে ডেটা ফিল্টার করা, যেমন কোনও কলামের মানের ভিত্তিতে সারি নির্বাচন করা।
loc[]এবংiloc[]: ইনডেক্স বা পজিশনাল ইনডেক্স ব্যবহার করে সারি নির্বাচন করা।
এই পদ্ধতিগুলি ব্যবহার করে আপনি Pandas DataFrame থেকে প্রয়োজনীয় ডেটা নির্বাচন এবং ফিল্টার করতে পারবেন, যা ডেটা বিশ্লেষণ এবং প্রক্রিয়াকরণের জন্য অত্যন্ত গুরুত্বপূর্ণ।
Python-এ missing data বা null values (যাকে NaN - Not a Number বলা হয়) ডেটা সেটের একটি সাধারণ সমস্যা। Pandas লাইব্রেরি এই সমস্যা সমাধানের জন্য কার্যকরী মেথড সরবরাহ করে, যেমন fillna() এবং dropna(), যা ডেটাতে মিসিং বা NaN মান পরিচালনা করতে সহায়ক। এই দুটি মেথডের সাহায্যে আপনি মিসিং ডেটা অলম্বন (fill) বা অপসারণ (drop) করতে পারেন।
১. fillna() মেথড
fillna() মেথডটি মিসিং ডেটাকে নির্দিষ্ট মান দিয়ে পূর্ণ করতে ব্যবহৃত হয়। এটি ডেটাতে যেকোনো NaN বা মিসিং ভ্যালুকে সরাসরি নির্দিষ্ট কোনো মান দ্বারা প্রতিস্থাপন করে।
Syntax:
DataFrame.fillna(value=None, method=None, axis=None, inplace=False)
- value: পূর্ণ করার জন্য একটি নির্দিষ্ট মান (যেমন:
0,mean,median, ইত্যাদি)। - method: "ffill" (forward fill) বা "bfill" (backward fill) পদ্ধতি ব্যবহার করা যেতে পারে।
- axis: 0 (rows) বা 1 (columns) দ্বারা নির্দেশিত হয়।
- inplace: যদি
Trueহয়, তাহলে পরিবর্তন DataFrame-এ সরাসরি করা হয়, নইলে নতুন DataFrame তৈরি হয়।
উদাহরণ:
import pandas as pd
import numpy as np
# DataFrame তৈরি
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, np.nan, 30, np.nan],
'Salary': [50000, 60000, np.nan, 80000]}
df = pd.DataFrame(data)
# মিসিং ডেটা পূর্ণ করা (Age কলামে NaN পূর্ণ করা)
df['Age'] = df['Age'].fillna(df['Age'].mean()) # Age এর গড় মান দিয়ে পূর্ণ
# Salary কলামে NaN পূর্ণ করা
df['Salary'] = df['Salary'].fillna(75000) # নির্দিষ্ট মান দিয়ে পূর্ণ
print(df)
Output:
Name Age Salary
0 Alice 25.0 50000
1 Bob 27.5 60000
2 Charlie 30.0 75000
3 David 27.5 80000
এখানে, Age কলামের মিসিং ভ্যালু গড় মান দিয়ে পূর্ণ করা হয়েছে এবং Salary কলামের মিসিং ভ্যালু একটি নির্দিষ্ট মান (75000) দিয়ে পূর্ণ করা হয়েছে।
method প্যারামিটার:
- "ffill" (Forward Fill): এটি পূর্ববর্তী মান দ্বারা মিসিং ডেটা পূর্ণ করবে।
- "bfill" (Backward Fill): এটি পরবর্তী মান দ্বারা মিসিং ডেটা পূর্ণ করবে।
# Forward fill ব্যবহার
df['Age'] = df['Age'].fillna(method='ffill')
২. dropna() মেথড
dropna() মেথডটি মিসিং বা NaN ভ্যালু ধারণকারী সারি বা কলাম মুছে ফেলতে ব্যবহৃত হয়। এটি ব্যবহার করে আপনি যেকোনো সারি বা কলাম যা মিসিং ভ্যালু ধারণ করে তা সরিয়ে ফেলতে পারেন।
Syntax:
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
- axis: 0 (rows) বা 1 (columns)। 0 হলে সারি বাদ দেয়, 1 হলে কলাম বাদ দেয়।
- how: 'any' বা 'all'। 'any' হলে যে কোন মিসিং ডেটা থাকলে সারি বা কলামটি বাদ দেওয়া হবে, 'all' হলে শুধুমাত্র সবগুলো মান মিসিং থাকলে বাদ দেওয়া হবে।
- thresh: ন্যূনতম ভ্যালু সংখ্যা, যা সারি বা কলামে থাকতে হবে (যেমন, কমপক্ষে 2টি মান থাকতে হবে)।
- subset: যে কলামগুলিতে মিসিং ডেটা পরীক্ষা করা হবে।
- inplace: যদি
Trueহয়, তাহলে পরিবর্তন সরাসরি DataFrame-এ করা হয়।
উদাহরণ:
# DataFrame তৈরি
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, np.nan, 30, np.nan],
'Salary': [50000, 60000, np.nan, 80000]}
df = pd.DataFrame(data)
# মিসিং ডেটা সহ সারি বাদ দেয়া
df_cleaned = df.dropna(axis=0, how='any') # যে সারিতে NaN থাকবে তা বাদ দিবে
print(df_cleaned)
Output:
Name Age Salary
0 Alice 25.0 50000
এখানে, যেকোনো সারি যা মিসিং ডেটা ধারণ করে (যেমন, সারি 1 এবং সারি 3) তা বাদ দেওয়া হয়েছে।
how প্যারামিটার:
- "any": যদি একটি মিসিং ভ্যালু থাকে, তাহলে সারি বা কলামটি বাদ দেয়।
- "all": যদি সমস্ত মান মিসিং থাকে, তাহলে সারি বা কলামটি বাদ দেয়।
# সমস্ত কলামে NaN থাকতে হলে কলাম বাদ দেয়া
df_cleaned = df.dropna(axis=1, how='all')
dropna() এবং fillna() এর মধ্যে পার্থক্য
| মেথড | বর্ণনা |
|---|---|
fillna() | মিসিং ডেটাকে নির্দিষ্ট মান দিয়ে পূর্ণ করা। |
dropna() | মিসিং ডেটা সম্পূর্ণ সারি বা কলাম থেকে বাদ দেয়া। |
সারাংশ
fillna()মেথডটি মিসিং ডেটা পূর্ণ করতে ব্যবহৃত হয়, যা সাধারণত গড় (mean), গুণ (mode), বা নির্দিষ্ট মানের মাধ্যমে পূর্ণ করা হয়।dropna()মেথডটি মিসিং ডেটা ধারণকারী সারি বা কলাম বাদ দিতে ব্যবহৃত হয়।
এটি আপনাকে ডেটা ক্লিনিং এবং প্রিপ্রসেসিং-এর জন্য গুরুত্বপূর্ণ হাতিয়ার সরবরাহ করে, যার মাধ্যমে আপনি ডেটা বিশ্লেষণ এবং মডেল ট্রেনিংয়ের জন্য প্রস্তুত করতে পারেন।
Python-এ ডেটা প্রক্রিয়াকরণের জন্য Pandas লাইব্রেরি ব্যবহৃত হয়। Data Aggregation এবং Grouping হল দুটি গুরুত্বপূর্ণ টেকনিক যা ডেটাকে বিভিন্ন গ্রুপে ভাগ করে এবং প্রতিটি গ্রুপের উপর কিছু স্ট্যাটিস্টিক্যাল অপারেশন (যেমন গড়, সর্বোচ্চ, সর্বনিম্ন, মোট) প্রয়োগ করতে সহায়ক। এটি সাধারণত ডেটা বিশ্লেষণে ব্যবহৃত হয়, যেমন ব্যবসায়িক ডেটা বিশ্লেষণ, আর্থিক বিশ্লেষণ, এবং বৈজ্ঞানিক গবেষণায়।
Pandas-এ groupby() ফাংশন ব্যবহার করে আপনি ডেটাকে গ্রুপ করতে পারেন এবং প্রতিটি গ্রুপের জন্য বিভিন্ন পরিসংখ্যান (aggregation) করতে পারেন। এই টেকনিকটি ডেটাকে একটি নির্দিষ্ট বৈশিষ্ট্যের উপর ভিত্তি করে গ্রুপিং এবং সেই গ্রুপগুলোর উপর কার্যক্রম করার জন্য অত্যন্ত শক্তিশালী।
১. groupby() ফাংশন
groupby() ফাংশন Pandas DataFrame বা Series-এ ব্যবহৃত হয় ডেটাকে একটি বা একাধিক কীগুলোর (column) ভিত্তিতে গ্রুপ করার জন্য।
groupby() এর সাধারণ সিনট্যাক্স:
df.groupby('column_name')
এটি column_name এর ভিত্তিতে ডেটাকে গ্রুপ করবে, এবং গ্রুপের উপর কোনও পরিসংখ্যানিক ফাংশন প্রয়োগ করতে পারবেন।
২. Data Aggregation (পরিসংখ্যান অপারেশন)
ডেটা গ্রুপ করার পরে, আমরা সাধারণত সেই গ্রুপগুলোর উপর কিছু পরিসংখ্যানিক অপারেশন (aggregation) করতে চাই। কিছু সাধারণ aggregation ফাংশন হল:
- sum(): প্রতিটি গ্রুপের মানগুলির যোগফল।
- mean(): প্রতিটি গ্রুপের গড় মান।
- count(): প্রতিটি গ্রুপে কতগুলি উপাদান রয়েছে।
- min(): প্রতিটি গ্রুপের সর্বনিম্ন মান।
- max(): প্রতিটি গ্রুপের সর্বোচ্চ মান।
- std(): প্রতিটি গ্রুপের মানের স্ট্যান্ডার্ড ডেভিয়েশন।
৩. groupby() ফাংশনের ব্যবহার
উদাহরণ:
ধরা যাক, আমাদের কাছে একটি ডেটাসেট রয়েছে যেখানে কিছু বিক্রয় ডেটা রয়েছে, এবং আমরা প্রতিটি বিক্রয় বিভাগের জন্য গড় বিক্রয় নির্ণয় করতে চাই।
import pandas as pd
# উদাহরণ ডেটা তৈরি
data = {
'Department': ['HR', 'IT', 'HR', 'IT', 'Sales', 'Sales', 'IT', 'HR'],
'Employee': ['Alice', 'Bob', 'Charlie', 'David', 'Eve', 'Frank', 'Grace', 'Hank'],
'Sales': [200, 300, 150, 400, 500, 600, 350, 250]
}
df = pd.DataFrame(data)
# 'Department' অনুযায়ী ডেটা গ্রুপ করা এবং গড় বিক্রয় বের করা
grouped = df.groupby('Department')['Sales'].mean()
print(grouped)
আউটপুট:
Department
HR 200.000000
IT 350.000000
Sales 550.000000
Name: Sales, dtype: float64
এখানে, আমরা Department কলামের ভিত্তিতে ডেটা গ্রুপ করেছি এবং প্রতিটি গ্রুপের জন্য Sales কলামের গড় বের করেছি।
৪. একাধিক কলাম ব্যবহার করে গ্রুপিং
আমরা একাধিক কলাম ব্যবহার করেও গ্রুপ করতে পারি। উদাহরণস্বরূপ, যদি আমাদের "Department" এবং "Employee" কলামের ভিত্তিতে ডেটা গ্রুপ করতে হয়:
# 'Department' এবং 'Employee' এর ভিত্তিতে গ্রুপ করা এবং বিক্রয়ের মোট পরিমাণ বের করা
grouped = df.groupby(['Department', 'Employee'])['Sales'].sum()
print(grouped)
আউটপুট:
Department Employee
HR Alice 200
Charlie 150
Hank 250
IT Bob 300
David 400
Grace 350
Sales Eve 500
Frank 600
Name: Sales, dtype: int64
এখানে, Department এবং Employee দুইটি কলামের ভিত্তিতে ডেটা গ্রুপ করা হয়েছে এবং প্রতিটি গ্রুপের জন্য বিক্রয়ের মোট পরিমাণ বের করা হয়েছে।
৫. একাধিক aggregation ফাংশন ব্যবহার করা
একাধিক aggregation ফাংশন প্রয়োগ করা সম্ভব। Pandas-এ এটি খুব সহজ, আপনি একাধিক ফাংশন একসাথে ব্যবহার করতে পারেন agg() ফাংশনের মাধ্যমে।
# 'Department' এর ভিত্তিতে গ্রুপ করা এবং একাধিক aggregation ফাংশন প্রয়োগ করা
grouped = df.groupby('Department')['Sales'].agg(['sum', 'mean', 'min', 'max'])
print(grouped)
আউটপুট:
sum mean min max
Department
HR 600 200.0 150 250
IT 1050 350.0 300 400
Sales 1100 550.0 500 600
এখানে, আমরা sum, mean, min, এবং max একসাথে ব্যবহার করে প্রতিটি Department এর জন্য বিভিন্ন পরিসংখ্যান বের করেছি।
৬. filter() ফাংশন ব্যবহার
Pandas-এ filter() ফাংশন ব্যবহার করে আপনি নির্দিষ্ট গ্রুপের উপর নির্ভর করে ডেটা ফিল্টার করতে পারেন। উদাহরণস্বরূপ, যদি আপনি এমন সব বিভাগ চাচ্ছেন যার গড় বিক্রয় ৩০০ এর বেশি:
# filter() ফাংশন ব্যবহার করে গড় বিক্রয় 300 এর বেশি এমন বিভাগগুলি নির্বাচন করা
filtered = df.groupby('Department').filter(lambda x: x['Sales'].mean() > 300)
print(filtered)
আউটপুট:
Department Employee Sales
1 IT Bob 300
3 IT David 400
6 IT Grace 350
4 Sales Eve 500
5 Sales Frank 600
এখানে, আমরা filter() ফাংশন ব্যবহার করে শুধুমাত্র সেই বিভাগগুলিই নির্বাচন করেছি, যার গড় বিক্রয় ৩০০ এর বেশি।
সারাংশ
Pandas-এ groupby() ফাংশন ব্যবহার করে আপনি সহজেই ডেটাকে গ্রুপ করতে পারেন এবং প্রতিটি গ্রুপের উপর বিভিন্ন aggregation অপারেশন প্রয়োগ করতে পারেন। এটি ডেটা বিশ্লেষণের একটি শক্তিশালী এবং অপরিহার্য টুল। groupby() ফাংশন আপনাকে ডেটা গ্রুপ করার পর বিভিন্ন পরিসংখ্যানিক অপারেশন যেমন sum(), mean(), count(), min(), max(), agg(), এবং filter() প্রয়োগ করে আপনার ডেটা বিশ্লেষণ করতে সহায়ক হয়।
Read more